/**
 * 
 */
package com.feib.stms.dao;

import java.util.List;

import org.springframework.dao.DataAccessException;

import com.feib.stms.model.Group;
import com.feib.stms.pagination.PaginatedList;

/**
 * @author Lion Gao
 *
 */
public interface GroupDao {
	
	/** 
	 * 根據pk查詢券商維護作業
	 * @param groupPk
	 * @return Group
	 */
	public Group getByGroupPk(Long groupPk);

	/** 
	 * 根據代碼查詢(完全比對)
	 * @param groupNo
	 * @return Group
	 */
	public Group getByGroupNo(String groupNo);
	
	/**
	 * 分頁查詢券商維護作業
	 * @param group
	 * @param paginatedList
	 * @return PaginatedList<Group>
	 */
	public PaginatedList<Group> queryForPaginatedListByGroup(Group group , PaginatedList<Group> paginatedList);
	
	/** 新增券商維護作業
	 * @param group
	 * @return int
	 */
	public int insert(Group group) throws DataAccessException;
	
	/** 
	 * 更新券商維護作業
	 * @param group
	 * @return int
	 */
	public int update(Group group);
	
	/** 
	 * 統計券商代號重複
	 * @param groupPk
	 * @param groupNo
	 * @return int
	 */
	public int countGroupNo(Long groupPk , String groupNo);
	
	/** 
	 * 統計券商代號重複
	 * @param groupNo
	 * @return int
	 */
	public int countGroupNo(String groupNo);

	/**
     * 依據查詢物件查詢券商,排除銀行端資料
     * @param group 查詢條件
     * @param paginatedList 換頁、排序條件
     * @return 查詢結果物件
     */
	public PaginatedList<Group> queryForPaginatedListByGroupExcludeBank(
			Group group, PaginatedList<Group> paginatedList);
	
	/**
	 * 查詢所有群組
	 * @return
	 */
	public List<Group> queryAllGroup();
}
